Adaptor signature
Adaptor はある hidden value に commit し、ある署名に対応するデータ
s = r + t + H(R + T || P || m) * p という署名を作って、s' = s -t が adaptor
Adaptor と署名を合わせると hidden value がわかる
なにに対する署名?
別になんでもよくて、例えば bitcoin ならある tx に対する署名があったときに、また別のなんらかの hidden value にコミットしている adoptor を定義できる
Adaptor と hidden value からは署名がわかる
hidden value を知らない第三者が、ある adaptor を元に、同じ hidden value に commit する adaptor を生成することが可能
adaptor すらいらない?hidden value t に対応する T がわかれば adapor はつくれるか
Adaptor signature は hidden value とセットにならないと有効な署名にはならないが、セットになれば有効な署名であることは検証できる
あるいは署名を暗号化したものと考えるとわかりやすいのか
alice to bob の tx と bob to alice の tx を atomic に行うケース
alice は bob への tx をつくり、その tx に有効な署名の adaptor を作成し bob に adoptor を渡す。adoptor は有効な署名ではないのでまだ bob は受け取れない(同時に、定義より、hidden value X に commit している)
bob は alice への tx をつくり、そのtxに有効な署名の adoptor を alice から受け取った adoptor から作成する。この adpotor も hidden value X に commit している
なぜこんなことができる?
alice は hidden value を知っているので、bob の adoptor と hidden value X より、bob が作成したtxに有効な署名を作成できる
bobは alice が作成した署名と自分の adoptor より hidden value X を算出できるので、X と alice の adoptor より、alice to bob の tx に有効な署名をつくることができる